package thread;
/**
 * 常见的并发安全API：StringBuilder和StringBuffer
 * 1.StringBuilder不是并发安全的(异步)抢，多线程场景下不能用
 * 2.StringBuffer是并发安全的(同步)排队，多线程场景时使用
 */
public class SyncDemo3 {
    public static void main(String[] args) {
        //StringBuilder sb =new StringBuilder();
        StringBuffer sb =new StringBuffer();
        Thread t1 =new Thread(){
            public void run(){
                for (int i = 0; i <1000 ; i++) {
                    sb.append("abc");  //StringBuffer.append()里面有synchronized
                }
            }
        };
        Thread t2 =new Thread(){
            public void run(){
                for (int i = 0; i <1000 ; i++) {
                    sb.append("def");
                }
            }
        };

        t1.start();
        t2.start();
        try {
            Thread.sleep(50);
        } catch (InterruptedException e) {

        }
        System.out.println(sb.length());
        System.out.println(sb);

    }
}
